package top.cardone.api.v1.usercenter.user

import org.apache.commons.lang3.StringUtils
import top.cardone.usercenter.service.UserService
import top.cardone.context.ApplicationContextHolder
import top.cardone.core.CodeException

class r0004 implements java.io.Serializable {
    def input(input) {
        input
    }

    def validation(input) {
    }

    def func(input) {
		['data': ApplicationContextHolder.getBean(UserService.class).page(input)]
    }

    def output(output) {
        def newOutput = [:]

        newOutput.totalElements = output.getTotalElements()
        newOutput.totalPages = output.getTotalPages()
        newOutput.hasPrevious = output.hasPrevious()
        newOutput.previous = output.previousOrFirst().getPageNumber() + 1
        newOutput.hasNext = output.next().getPageNumber() < output.getTotalPages()
        newOutput.next = output.getPageNumber() + 1
        newOutput.pages = []
        newOutput.page = output.getNumber() + 1

        def pagesRange = 6

        def pagesRangeHalf = new java.math.BigDecimal(pagesRange).divide(new BigDecimal(2), BigDecimal.ROUND_HALF_UP).toBigInteger().intValue()

        def pagesRangeStart = Math.max(page.getNumber() + 1 - pagesRangeHalf, 1)

        def pagesRangeEnd = Math.min((pagesRangeStart + pagesRange) - 1, page.getTotalPages())

        if (((pagesRangeEnd - pagesRangeStart) + 1) < pagesRange) {
            pagesRangeStart = Math.max((pagesRangeEnd - pagesRange) + 1, 1)
        }

        def pagesRangeLength = pagesRangeEnd - pagesRangeStart

        for (int i = 0; i <= pagesRangeLength; i++) {
            newOutput.pages.add(pagesRangeStart++)
        }

        newOutput.datas = []

        for (def contentItem : output.getContent()) {
            newOutput.datas.add(['address': contentItem['address']])
            newOutput.datas.add(['age': contentItem['age']])
            newOutput.datas.add(['aliasName': contentItem['aliasName']])
            newOutput.datas.add(['areaCode': contentItem['areaCode']])
            newOutput.datas.add(['batchNo': contentItem['batchNo']])
            newOutput.datas.add(['beginDate': contentItem['beginDate']])
            newOutput.datas.add(['birthday': contentItem['birthday']])
            newOutput.datas.add(['callName': contentItem['callName']])
            newOutput.datas.add(['cityCode': contentItem['cityCode']])
            newOutput.datas.add(['companyName': contentItem['companyName']])
            newOutput.datas.add(['contact': contentItem['contact']])
            newOutput.datas.add(['countryCode': contentItem['countryCode']])
            newOutput.datas.add(['createdByCode': contentItem['createdByCode']])
            newOutput.datas.add(['createdDate': contentItem['createdDate']])
            newOutput.datas.add(['dataStateCode': contentItem['dataStateCode']])
            newOutput.datas.add(['departmentCode': contentItem['departmentCode']])
            newOutput.datas.add(['diplomaCode': contentItem['diplomaCode']])
            newOutput.datas.add(['email': contentItem['email']])
            newOutput.datas.add(['endDate': contentItem['endDate']])
            newOutput.datas.add(['firstName': contentItem['firstName']])
            newOutput.datas.add(['flagCode': contentItem['flagCode']])
            newOutput.datas.add(['flagObjectCode': contentItem['flagObjectCode']])
            newOutput.datas.add(['folkCode': contentItem['folkCode']])
            newOutput.datas.add(['idCardCode': contentItem['idCardCode']])
            newOutput.datas.add(['idCardNo': contentItem['idCardNo']])
            newOutput.datas.add(['intro': contentItem['intro']])
            newOutput.datas.add(['jsonData': contentItem['jsonData']])
            newOutput.datas.add(['lastModifiedByCode': contentItem['lastModifiedByCode']])
            newOutput.datas.add(['lastModifiedDate': contentItem['lastModifiedDate']])
            newOutput.datas.add(['lastName': contentItem['lastName']])
            newOutput.datas.add(['locus': contentItem['locus']])
            newOutput.datas.add(['marryStateCode': contentItem['marryStateCode']])
            newOutput.datas.add(['mobilePhone': contentItem['mobilePhone']])
            newOutput.datas.add(['name': contentItem['name']])
            newOutput.datas.add(['namePinyin': contentItem['namePinyin']])
            newOutput.datas.add(['orderBy': contentItem['orderBy']])
            newOutput.datas.add(['orgCode': contentItem['orgCode']])
            newOutput.datas.add(['password': contentItem['password']])
            newOutput.datas.add(['passwordSalt': contentItem['passwordSalt']])
            newOutput.datas.add(['personalCode': contentItem['personalCode']])
            newOutput.datas.add(['portraitUrl': contentItem['portraitUrl']])
            newOutput.datas.add(['privatePassword': contentItem['privatePassword']])
            newOutput.datas.add(['privatePasswordSalt': contentItem['privatePasswordSalt']])
            newOutput.datas.add(['professionCode': contentItem['professionCode']])
            newOutput.datas.add(['provinceCode': contentItem['provinceCode']])
            newOutput.datas.add(['qq': contentItem['qq']])
            newOutput.datas.add(['regionCode': contentItem['regionCode']])
            newOutput.datas.add(['remark': contentItem['remark']])
            newOutput.datas.add(['sexCode': contentItem['sexCode']])
            newOutput.datas.add(['siteCode': contentItem['siteCode']])
            newOutput.datas.add(['stateCode': contentItem['stateCode']])
            newOutput.datas.add(['systemInfoCode': contentItem['systemInfoCode']])
            newOutput.datas.add(['telephone': contentItem['telephone']])
            newOutput.datas.add(['userCode': contentItem['userCode']])
            newOutput.datas.add(['userId': contentItem['userId']])
            newOutput.datas.add(['version': contentItem['version']])
        }

        newOutput
    }
}